package com.comac.ins.isfd.domain.bo;

import com.comac.ins.common.core.validate.AddGroup;
import com.comac.ins.common.core.validate.EditGroup;
import com.comac.ins.common.mybatis.core.domain.BaseEntity;
import com.comac.ins.isfd.domain.IsfdAcousticsPorousMaterial;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 声学多孔材料业务对象 isfd_acoustics_porous_material
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = IsfdAcousticsPorousMaterial.class, reverseConvertGenerate = false)
public class IsfdAcousticsPorousMaterialBo extends BaseEntity {

    /**
     * 对象存储主键
     */
    @NotNull(message = "对象存储主键不能为空", groups = {EditGroup.class})
    private Long id;

    /**
     * 材料名称
     */
    @NotBlank(message = "材料名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String materialName;

    /**
     * 定压比热容(J/(kg·K))
     */
    @NotNull(message = "定压比热容(J/(kg·K))不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double cp;

    /**
     * 定容比热容(J/(kg·K))
     */
    @NotNull(message = "定容比热容(J/(kg·K))不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double cv;

    /**
     * 流阻实部(rayl/m)
     */
    @NotNull(message = "流阻实部(rayl/m)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double flowResistivityReal;

    /**
     * 流阻虚部(rayl/m)
     */
    @NotNull(message = "流阻虚部(rayl/m)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double flowResistivityImag;

    /**
     * 流体密度实部(kg/m³)
     */
    @NotNull(message = "流体密度实部(kg/m³)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double fluidDensityReal;

    /**
     * 流体密度虚部(kg/m³)
     */
    @NotNull(message = "流体密度虚部(kg/m³)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double fluidDensityImag;

    /**
     * 泊松比实部
     */
    @NotNull(message = "泊松比实部不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double poissonRatioReal;

    /**
     * 泊松比虚部
     */
    @NotNull(message = "泊松比虚部不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double poissonRatioImag;

    /**
     * 孔隙率
     */
    @NotNull(message = "孔隙率不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double porosity;

    /**
     * 固体密度实部(kg/m³)
     */
    @NotNull(message = "固体密度实部(kg/m³)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double solidDensityReal;

    /**
     * 固体密度虚部(kg/m³)
     */
    @NotNull(message = "固体密度虚部(kg/m³)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double solidDensityImag;

    /**
     * 热导率(W/(m·K))
     */
    @NotNull(message = "热导率(W/(m·K))不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double thermalConductivity;

    /**
     * 热特征长度(m)
     */
    @NotNull(message = "热特征长度(m)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double thermalLength;

    /**
     * 曲折度
     */
    @NotNull(message = "曲折度不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double tortuosity;

    /**
     * 粘度(Pa·s)
     */
    @NotNull(message = "粘度(Pa·s)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double viscosity;

    /**
     * 粘性特征长度(m)
     */
    @NotNull(message = "粘性特征长度(m)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double viscousLength;

    /**
     * 杨氏模量实部(Pa)
     */
    @NotNull(message = "杨氏模量实部(Pa)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double youngModulusReal;

    /**
     * 杨氏模量虚部(Pa)
     */
    @NotNull(message = "杨氏模量虚部(Pa)不能为空", groups = {AddGroup.class, EditGroup.class})
    private Double youngModulusImag;

    /**
     * 单位系统
     */
    @NotBlank(message = "单位系统不能为空", groups = {AddGroup.class, EditGroup.class})
    private String unitSystem;

    /**
     * 原始文件地址
     */
    private String url;


}
